﻿package com.simarsoft.common.util;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 用于格式化
 * 创建日期：2009-10-19
 *@author Harrison.Ma
 *@version 1.0
 */
public class SimpleFormat {

	/**
		* 将某日期字符串转化为对应日期的Calendar实例。须给定该字符串的日期格式pattern。<p>
	    * 
	    * 字母  日期或时间元素  表示  示例<p>  
		*	G  Era 标志符  Text  AD  <br>
		*	y  年  Year  1996; 96  <br>
		*	M  年中的月份  Month  July; Jul; 07  <br>
		*	w  年中的周数  Number  27  <br>
		*	W  月份中的周数  Number  2  <br>
		*	D  年中的天数  Number  189  <br>
		*	d  月份中的天数  Number  10  <br>
		*	F  月份中的星期  Number  2  <br>
		*	E  星期中的天数  Text  Tuesday; Tue  <br>
		*	a  Am/pm 标记  Text  PM  <br>
		*	H  一天中的小时数（0-23）  Number  0  <br>
		*	k  一天中的小时数（1-24）  Number  24  <br>
		*	K  am/pm 中的小时数（0-11）  Number  0  <br>
		*	h  am/pm 中的小时数（1-12）  Number  12  <br>
		*	m  小时中的分钟数  Number  30  <br>
		*	s  分钟中的秒数  Number  55  <br>
		*	S  毫秒数  Number  978  <br>
		*	z  时区  General time zone  Pacific Standard Time; PST; GMT-08:00  <br>
		*	Z  时区  RFC 822 time zone  -0800  <br>
		*
		* @param date 日期字符串
		* @param pattern 日期格式
		* @return Calendar实例
	    * 
	*/
		public static Calendar getCalendar(String date, String pattern){
			try {
				Calendar cal = Calendar.getInstance();
				cal.setTime(new SimpleDateFormat(pattern).parse(date));
				return cal;
			}
			catch(Exception e) {
				e.printStackTrace();
			}
			return null;
		}
		
	/**
		* 将日期转化为规定的格式。需提供日期实例和格式。<p>
		* 
		*  字母  日期或时间元素  表示  示例  <p>
		*	G  Era 标志符  Text  AD  <br>
		*	y  年  Year  1996; 96  <br>
		*	M  年中的月份  Month  July; Jul; 07  <br>
		*	w  年中的周数  Number  27  <br>
		*	W  月份中的周数  Number  2  <br>
		*	D  年中的天数  Number  189  <br>
		*	d  月份中的天数  Number  10  <br>
		*	F  月份中的星期  Number  2  <br>
		*	E  星期中的天数  Text  Tuesday; Tue  <br>
		*	a  Am/pm 标记  Text  PM  <br>
		*	H  一天中的小时数（0-23）  Number  0  <br>
		*	k  一天中的小时数（1-24）  Number  24  <br>
		*	K  am/pm 中的小时数（0-11）  Number  0  <br>
		*	h  am/pm 中的小时数（1-12）  Number  12  <br>
		*	m  小时中的分钟数  Number  30  <br>
		*	s  分钟中的秒数  Number  55  <br>
		*	S  毫秒数  Number  978  <br>
		*	z  时区  General time zone  Pacific Standard Time; PST; GMT-08:00  <br>
		*	Z  时区  RFC 822 time zone  -0800  <br>
		*
		* 
		* @param 日期实例
		* @param pattern 格式
		* @return
		*
	*/
		public static String formatDate(Date date, String pattern){
			try {
				return new SimpleDateFormat(pattern).format(date);
			}
			catch(Exception e) {
				e.printStackTrace();
			}
			return null;
		}
		
		/**
		 * 按照规定的格式FORMAT传入的数字<p>
		 * 
		 * 0  数字  阿拉伯数字  <br>
		 * #  数字字  阿拉伯数字，如果不存在则显示为 0  <br>
		 * .  数字  小数分隔符或货币小数分隔符  <br>
		 * -  数字  减号  <br>
		 * ,  数字  分组分隔符  <br>
		 * E  数字  分隔科学计数法中的尾数和指数。在前缀或后缀中无需加引号。 <br> 
		 * ;  子模式边界 分隔正数和负数子模式  <br>
		 * %  前缀或后缀  乘以 100 并显示为百分数  <br>
		 * \u2030  前缀或后缀  乘以 1000 并显示为千分数  <br>
		 * \u00A4  前缀或后缀  货币记号，由货币符号替换。如果两个同时出现，则用国际货币符号替换。如果出现在某个模式中，则使用货币小数分隔符，而不使用小数分隔符。 <br> 
		 * '  前缀或后缀  用于在前缀或或后缀中为特殊字符加引号，例如 "'#'#" 将 123 格式化为 "#123"。要创建单引号本身，请连续使用两个单引号："# o''clock"。 <br> 
		 * @param num
		 * @param pattern
		 * @return
		 */
		public static String formatDecimal(double num, String pattern) {
			try {
				return new DecimalFormat(pattern).format(num);
			}
			catch(Exception e) {
				e.printStackTrace();
			}
			return null;
		}
}
